<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      header {
        width: 375px;
        height: 50px;
        background-color: #e54847;
        color: #fff;
        text-align: center;
        line-height: 50px;
        font-size: 22px;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <h2>组件传参-父传子</h2>
      <p>count: {{ count }}</p>
      <child abc="hello" :count="count"></child>

      <hr />

      <ul>
        <child2 v-for="item in list" :key="item" :item="item"></child2>
        <!-- <child2 item="a"></child2>
        <child2 item="b"></child2>
        <child2 item="c"></child2>
        <child2 item="d"></child2> -->
      </ul>

      <hr />

      <my-header title="猫眼电影"></my-header>
      <br />
      <my-header title="灌篮高手"></my-header>
    </div>

    <script src="./lib/vue3.js"></script>
    <script>
      const { createApp } = Vue;

      // 默认情况下，每个组件之间的数据是不共享的
      // 每个组件data的数据只能给它自己的template使用

      /*
        组件传参 - 父传子
          1. 在父组件的子组件标签上面添加自定义属性
          2. 在子组件里面使用props选项进行接受
      */

      // 当一个子组件要被调用很多次，但是里面的内容又不一样，那么不一样的部分就可以通过父组件传递进去

      const Child = {
        props: ["abc", "count"],
        template: `
          <div>这是child子组件 - {{ abc }} - {{ count }}</div>
        `,
      };

      const Child2 = {
        props: ["item"],
        template: `
          <li>child2组件 - {{ item }}</li>
        `,
      };

      const MyHeader = {
        props: ["title"],
        template: `
          <header>{{ title }}</header>
        `,
      };

      createApp({
        data() {
          return {
            count: 10,
            list: ["a", "b", "c", "d"],
          };
        },
        components: {
          Child,
          Child2,
          MyHeader,
        },
      }).mount("#app");
    </script>
  </body>
</html>
